Career 2025 2024 2023 2022 2021 2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2004
All Rounds Final 1/2 1/4 First Second Third Fourth Pre-q Rubber 1 Rubber 2 Rubber 3 Rubber 4 Rubber 5 Robin Bronze Q3 N/A Q2 Q1 ER Q4 CR QF Q5 N/A
All Courts Acrylic N/A Clay Grass Carpet Hard I.hard
All Tour Calgary Challenger Oeiras 1 Challenger Hamburg Challenger Rennes Challenger Istanbul Challenger Australian Open - Melbourne Wimbledon - London France F19 France F12 France F12 France F2 France F3 France F13 France F15 France F17 France F20 France F1 France F2 France F4 France F8 France F9 France F10 France F12 Belgium F2 Belgium F3 France F13 France F18 France F19 France F20 France F1 France F2 France F4 France F5 Spain F11 France F7 France F8 France F10 France F11 Spain F14 France F12 Spain F27 Spain F29 Belgium F2 France F13 France F17 France F18 Great Britain F1 Great Britain F2 France F1 France F2 France F4 France F5 France F6 France F10 France F4 France F5 France F4 Morocco F2 Morocco F3 Tunisia F4 Tunisia F6 Morocco F5 Morocco F2 Tunisia F16 Tunisia F17 Tunisia F20 Tunisia F21 Tunisia F22 Tunisia F23 Tunisia F24 Tunisia F25 Tunisia F26 Tunisia F28 Tunisia F30 Tunisia F31 Tunisia F32 Tunisia F33 Tunisia F21 Mozambique F1 Mozambique F2 Egypt F13 Egypt F14 Morocco F4 Morocco F5 Morocco F6 USA F32 USA F40 Tunisia F21 (Hammamet) Tunisia F22 (Hammamet) Tunisia F23 (Hammamet) Tunisia F24 (Hammamet) France F15 USA F24 (Champaign) USA F26 (Decatur) USA F27 (Edwardsville) Belgium F9 (Koksijde) Belgium F10 (Lambermont) Tunisia F26 (Hammamet) Tunisia F28 (Hammamet) Tunisia F29 (Hammamet) Tunisia F30 (Hammamet) Tunisia F31 (Hammamet) Tunisia F32 (Hammamet) Tunisia F25 (Hammamet) Tunisia F38 (Hammamet) Tunisia F39 (Hammamet) Tunisia F27 Tunisia F40 (Hammamet) Tunisia F5 (Jerba) USA F10 (Little Rock) Tunisia F33 (Hammamet) France F20 Rodez Tunisia F20 (Jerba) Tunisia F22 (Hammamet) Tunisia F23 (Hammamet) Tunisia F24 (Hammamet) USA F19 (Wichita) USA F19b (Iowa City) USA F20 (Champaign) USA F21 (Decatur) USA F22 (Edwardsville) Romania F10 (Curtea de Arges) Tunisia F29 (La Marsa) Tunisia F37 (Monastir) Tunisia F38 (Monastir) Tunisia F39 (Monastir) Egypt F28 (Sharm El Sheikh) Cameroon F1 (Yaounde) Cameroon F2 (Yaounde) Tunisia F44 (Monastir) Tunisia F45 (Monastir) M25 Los Angeles M25 Tucson M15 Tabarka M15 Tabarka M15 Tabarka M15 Tabarka M15 Tabarka M15 Tabarka M25 Pardubice M25 Iowa City M25 Champaign Egypt F16 M15 Tabarka M25+H Bydgoszcz M25 La Marsa M15 Tabarka M15 Tabarka M25+H Lagos M25+H Lagos M25 Monastir M15 Meshref M15 Monastir M15 Monastir M15 Monastir M15 Manacor M15+H Bagnoles-de-l'Orne M15 Monastir M15+H Bressuire M15 Monastir M15 Monastir M15 Vale Do Lobo M15 Faro M15 Toulouse M15 Sintra M15 Monastir M25+H Rodez M15 Monastir M15 Monastir M15 Benicarlo M15 Madrid M15 Manacor M15 Manacor M15 Monastir M15+H Bressuire M15 Monastir M15 Monastir M15 Monastir M25 Vale do Lobo M15 Monastir M25 Faro M15 Monastir M25 Vale do Lobo M15 Poitiers M15 Monastir M15 Monastir M15 Monastir M25 Reus M25 Angers M15 Las Palmas de Gran Canaria M15 Monastir M15 Monastir M25 Klosters M25 Montauban M25 Wroclaw M25+H Ajaccio M15 Monastir M15 Xativa M15 Monastir M25 Santander M25 Bagneres-De-Bigorre M15 Monastir M25 Toulouse M15 Monastir France F14 France F15 M25 Monastir M25 Monastir M15 Monastir France F19 M25 Vale do Lobo M15 Monastir M25 Toulouse-Balma M15 Monastir M25 Vic M15 Oran M15 Monastir M15 Monastir M25 Montauban M15 Monastir M15 Monastir M25 Monastir M15 Monastir M25 Roehampton M25 Porto M15 Poitiers M25 Monastir M15 Oran M15 Monastir M15 Madrid M15 Monastir M25 Monastir M15 Monastir M15 Monastir M25 Reus M25 Monastir M25 Hammamet M25 Fuzhou M15 Monastir M25 Monastir M15 Monastir M15 Poitiers M15 Valencia M15 Gijon M25 Monastir M15 Monastir M25 Monastir M25 Hammamet M15 Monastir M25 Santo Domingo M25 Edmonton M25 Angers M25+H Rodez M25 Guiyang M15 Manacor Open D'Orleans - Orleans M15 Creteil Cherbourg Challenger M15 Monastir Challenger DCNS de Cherbourg - Cherbourg Bordeaux Challenger M15 Monastir Quimper Challenger M25 Monastir Cherbourg Challenger Monza Challenger Pozoblanco Challenger Recanati Challenger St. Remy Challenger Istanbul Challenger M15 Monastir Mons Challenger Rennes Challenger Orleans Challenger M25 Saint-Augustin Helsinki Challenger Cherbourg Challenger Bath Challenger Tunis Challenger M25 Monastir Scheveningen Challenger Cordenons Challenger Segovia Challenger St. Remy Challenger Petange Challenger Rennes Challenger Tunis Challenger Bordeaux Challenger Nottingham Challenger USA F35 M25 Edmonton St. Remy Challenger Petange Challenger Orleans Challenger Rennes Challenger Cherbourg Challenger M25 Monastir Le Gosier Challenger Bordeaux Challenger Orleans Challenger Mons Challenger Rennes Challenger Cherbourg Challenger Quimper Challenger Manerbio Challenger Como Challenger Orleans Challenger Mons Challenger Cherbourg Challenger Rome Challenger Manerbio Challenger Como Challenger Seoul Challenger Noumea Challenger Surbiton Challenger Nottingham Challenger Recanati Challenger Genova Challenger Szczecin Challenger Eckental Challenger Alicante Challenger Aix En Provence Challenger Poznan Challenger M15 Bressuire M25 Esch/Alzette Wroclaw Challenger Orleans Challenger Orleans Challenger Aix En Provence Challenger Vicenza Challenger Recanati Challenger Tunisia F20 Maia 1 Challenger San Luis Potosi Challenger Rome 1 Challenger Vicenza Challenger Lyon Challenger Heilbronn Challenger Tenerife 1 Challenger Rome Challenger Bordeaux Challenger M25 Monastir Tampere Challenger St. Remy Challenger Bordeaux Challenger M25 Villeneuve-Loubet Mouilleron-Le-Captif Challenger M15 Poitiers Tallahassee Challenger Le Gosier Challenger Seville Challenger M25 Padova Bordeaux Challenger M25 Toulouse-Balma Cordenons Challenger M15 Azay-le-Rideau M25 Angers Valencia Challenger M25 Kursumlijska Banja M25 Vic M25 Mataro Como Challenger Morelos Challenger Segovia Challenger M25+H Ajaccio Bratislava Challenger Genova Challenger Segovia Challenger M25 Porto Porto Challenger Eckental Challenger Forli 6 Challenger Rennes Challenger Cherbourg Challenger M25+H Bagneres-de-Bigorre St. Brieuc Challenger Granby Challenger Manzanillo Challenger Charlottesville Challenger Perugia Challenger Blois Challenger Karlsruhe Challenger Charleston Challenger Ortisei Challenger Pozoblanco Challenger Noumea Challenger Koblenz Challenger Rennes Challenger M15 Monastir Cherbourg Challenger Mouilleron-Le-Captif Challenger M25 Les Franqueses del Valles Lille Challenger St. Brieuc Challenger Calgary Challenger Pozoblanco Challenger Cassis Challenger Lyon Challenger Winnetka Challenger Perugia Challenger Bordeaux Challenger Manama Challenger Nottingham Challenger Noumea Challenger St. Brieuc Challenger M15 Lons-le-Saunier Rennes Challenger Lisbon Challenger Recanati Challenger Prostejov Challenger Prague Challenger Winnetka Challenger Portoroz Challenger Pozoblanco Challenger Salinas Challenger St. Brieuc Challenger Braunschweig Challenger Pozoblanco Challenger Barletta Challenger Mouilleron-Le-Captif Challenger Brest Challenger Roanne Challenger Pau Challenger Bari Challenger Cherbourg Challenger Pau Challenger Salinas Challenger Morelos Challenger Chicago Challenger Vancouver Challenger Prague 3 Challenger Orleans Challenger Hamburg Challenger Brest Challenger Bergamo Challenger Roanne Challenger Calgary Challenger Drummondville Challenger Maia Challenger Oeiras 1 Challenger Oeiras 2 Challenger M15 Monastir Puerto Vallarta Challenger Pau Challenger Szekesfehervar Challenger Madrid Challenger Morelos Challenger Rome Challenger Savannah Challenger Leon Challenger Aix En Provence Challenger Tyler Challenger Iasi Challenger Porto Challenger San Marino Challenger St. Tropez Challenger Mouilleron-Le-Captif Challenger Bergamo Challenger Quimper Challenger Cherbourg Challenger Pau Challenger Mouilleron-Le-Captif Challenger Girona Challenger Barcelona Challenger Thionville Challenger Cherbourg Challenger Tunis Challenger Abidjan 1 Challenger Abidjan 2 Challenger Oeiras 5 Challenger Segovia Challenger Little Rock Challenger Royan Challenger Cassis Challenger Koblenz Challenger Orleans Challenger Mouilleron-Le-Captif Challenger Pune Challenger Porto 2 Challenger Forli Challenger Cherbourg Challenger Rennes Challenger Bordeaux Challenger Barcelona Challenger Bratislava Challenger Sophia Antipolis Challenger Noumea Challenger Quimper Challenger St. Brieuc Challenger AEGON Championships - London Open de Moselle - Metz Open Sud de France - Montpellier Moselle Open - Metz Zug Challenger Mallorca Challenger Columbus Challenger Noumea Challenger Cherbourg Challenger Mons Challenger Nottingham Challenger Manacor Challenger Geneva Challenger Drummondville Challenger Bratislava Challenger Aircel Chennai Open - Chennai Lille Challenger Cherbourg Challeger Orleans Challenger Troyes Challenger Apia International - Sydney Open Sud de France - Montpellier Barcelona Open BancSabadell - Barcelona AEGON Championships - London AEGON International - Eastbourne Credit Agricole Suisse Open - Gstaad Winston-Salem Open - Winston-Salem If Stockholm Open - Stockholm Swiss Indoors Basel - Basel Credit Agricole Suisse Open - Gstaad Heineken Open - Auckland Open Sud de France - Montpellier Open 13 - Marseille Barcelona Open BancSabadell - Barcelona Topshelf Open - 's-Hertogenbosch Austrian Open - Kitzbuhel Moselle Open - Metz Erste Bank Open - Vienna Millennium Estoril Open - Estoril Grand Prix Hassan II - Marrakech Millennium Estoril Open - Estoril Porto Challenger Quimper Challenger St. Brieuc Challenger Moselle Open - Metz Open Sud de France - Montpellier Bet-at-home Open - Hamburg Millennium Estoril Open - Estoril Plava Laguna Croatia Open - Umag Swiss Open - Gstaad Moselle Open - Metz European Open - Antwerp European Open - Antwerp Open Parc - Lyon Bratislava Challenger Biel Challenger Credit Agricole Suisse Open - Gstaad AEGON Championships - London Moselle Open - Metz Mouilleron-Le-Captif Challenger Sao Paulo Challenger Casablanca Challenger Koblenz Challenger Vicenza Challenger Zagreb Challenger Barcelona Open BancSabadell - Barcelona BMW Open - Munich Open 13 - Marseille St. Brieuc Challenger Nottingham 3 Challenger Open de Nice Cote d'Azur - Nice AEGON Championships - London Mouilleron-Le-Captif Challenger Quimper Challenger Grand Prix Hassan II - Casablanca Tiburon Challenger Genova Challenger M25 Carnac Bet-at-home Cup - Kitzbuhel Moselle Open - Metz Bordeaux Challenger Open Sud de France - Montpellier Szczecin Challenger Open 13 - Marseille Mons Challenger Grand Prix Hassan II - Casablanca Todi Challenger Budapest Challenger Open de Nice Cote d'Azur - Nice Koblenz Challenger Topshelf Open - 's-Hertogenbosch SkiStar Swedish Open - Bastad Bet-at-home Cup - Kitzbuhel Moselle Open - Metz Aix En Provence Challenger Orleans Challenger Swiss Indoors Basel - Basel Braunschweig Challenger Heilbronn Challenger SkiStar Swedish Open - Bastad M25 Benicarlo Cherbourg Challenger Mouilleron-Le-Captif Challenger Calgary Challenger M15 Bressuire Valencia Open - Valencia M15+H Bagnoles de l'Orne Open Sud de France - Montpellier Mons Challenger Open 13 - Marseille Barcelona Open BancSabadell - Barcelona Blois Challenger Guadalajara Challenger Tunis Challenger Open Sud de France - Montpellier Generali Open - Kitzbuhel Mallorca Challenger Tenerife Challenger Antalya 3 Challenger Florence Challenger Eckental Challenger Bet-at-home Open - Hamburg Barcelona Open BancSabadell - Barcelona Millennium Estoril Open - Estoril AEGON Championships - London Lille Challenger Konzum Croatia Open - Umag Nonthaburi 3 Challenger Perugia Challenger Amersfoort Challenger Open Sud de France - Montpellier Cuernavaca Challenger Barcelona Open BancSabadell - Barcelona Puerto Vallarta Challenger Salinas 2 Challenger Oeiras 3 Challenger Orlando Challenger Aix En Provence Challenger Iasi Challenger Tampere Challenger Delray Beach Open - Delray Beach Tunis Challenger Pozoblanco Challenger Segovia Challenger Como Challenger Rennes Challenger Biella 7 Challenger Lugano Challenger San Luis Potosi Challenger Tunis Challenger Turin Challenger Qatar ExxonMobil Open - Doha Skopje Challenger Troisdorf Challenger Tunis Challenger Perugia Challenger Aguascalientes Challenger Blois Challenger Tyler Challenger Istanbul Challenger Orleans Challenger Prague 2 Challenger Abierto de Tenis Mifel - Los Cabos Sofia Open - Sofia Troyes Challenger Tennis Napoli Open - Naples Fairfield Challenger Hong Kong Tennis Open - Hong Kong Bordeaux Challenger Firenze Open - Florence Roanne Challenger Drummondville Challenger Maia Challenger Brest Challenger Chennai Challenger Lille Challenger Hamburg Open - Hamburg Porto 2 Challenger Roanne Challenger Mexico City Challenger Bet-at-home Open - Hamburg Open 13 Provence - Marseille Cordenons Challenger Nature Valley International - Eastbourne Ottignies-Louvain-la-Neuve Challenger Sophia Antipolis Challenger Cherbourg Challenger Waco Challenger Lille Challenger Segovia Challenger Francavilla Challenger Little Rock Challenger Campinas Challenger Kyiv Challenger Koblenz Challenger Manama Challenger Apia International - Sydney Sony Open Tennis - Miami Monte-Carlo Rolex Masters - Monte-Carlo BNP Paribas Masters - Paris Naples Challenger Monte-Carlo Rolex Masters - Monte-Carlo BNP Paribas Masters - Paris Sony Open Tennis - Miami BNP Paribas Masters - Paris ABN AMRO World Tennis Tournament - Rotterdam French Open - Paris Wimbledon - London Shanghai Rolex Masters - Shanghai U.S. Open - New York Australian Open - Melbourne French Open - Paris Wimbledon - London Hong Kong Tennis Open - Hong Kong Dubai Duty Free Tennis Championships - Dubai Australian Open - Melbourne BNP Paribas Masters - Paris French Open - Paris Qatar ExxonMobil Open - Doha Dubai Duty Free Tennis Championships - Dubai Wimbledon - London U.S. Open - New York Australian Open - Melbourne French Open - Paris Miami Open - Miami Wimbledon - London Mutua Madrid Open - Madrid Miami Open - Miami Monte-Carlo Rolex Masters - Monte-Carlo Internazionali BNL d'Italia - Rome U.S. Open - New York Wimbledon - London U.S. Open - New York Australian Open - Melbourne French Open - Paris AEGON Championships - London European Open - Antwerp Swiss Indoors Basel - Basel Hall of Fame Tennis Championships - Newport Australian Open - Melbourne French Open - Paris Davis Cup, Group II, PO, TUN-BUL 3-2 Davis Cup, Group II, 1R, TUN-SWE 2-3 Davis Cup, Group II, 1R, TUN-FIN 2-3 Wimbledon - London Rakuten Japan Open - Tokyo French Open - Paris Australian Open - Melbourne French Open - Paris Wimbledon - London Wimbledon - London U.S. Open - New York Australian Open - Melbourne Australian Open (juniors) French Open (juniors) All Lower level tournaments French Open - Paris Wimbledon - London U.S. Open - New York Australian Open - Melbourne French Open - Paris Wimbledon - London Australian Open - Melbourne M25 Saint-Augustin M25 Doha M25 Hazebrouck Davis Cup, Group II, 1R, TUN-GRE 1-3 Davis Cup, Group II, 1R, GEO-TUN 4-1 Davis Cup, Group II, PO, CYP-TUN 1-4 Davis Cup, World Group II, PO, GUA-TUN 1-3 Hopman Cup - Perth Wimbledon (juniors) Davis Cup, World Group II, 1R, TUN-IRL 3-2 Davis Cup, Group I, PO, TUN-UKR 3-2 St. Brieuc Challenger M25 Mataro Grand Prix Hassan II - Marrakech M25 Toulouse-Balma M25 Villeneuve-Loubet